﻿using System;

namespace Skynet.CommonLibrary.ThreadQueue.Interface
{
    /// <summary>
    /// 数据池接口
    /// </summary>
    /// <typeparam name="T">类型</typeparam>
    ///<remarks>
    /// 作者：         李志强
    /// 开发时间：  2011-04-18
    /// </remarks>
   public  interface IDataPool<T>
    {
        /// <summary>
        /// 缓冲区最大容量
        /// </summary>
       int MaxSize { get; }

       /// <summary>
       /// 缓冲区数量
       /// </summary>
       /// <returns></returns>
       int Count { get; }

        /// <summary>
        /// 返回最顶端的数据，如果没有数据则返回NULL
        /// </summary>
        /// <returns></returns>
       T Dequeue();

        /// <summary>
        /// 添加数据到队列中，如果队列数量大于所设置的最大容量则抛出异常
        /// </summary>
        /// <param name="o"></param>
       void Enqueue(T o);

       //入队列和出队列通知委托
       Action<T> EnqueueAction {set; }
       Action<T> DequeueAction {set; }
    }
}
